﻿using Hangout.Web.Core.Meetup;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace Hangout.Services.Core.Meetup
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IMeetupService" in both code and config file together.
    [ServiceContract]
    public interface IMeetupService
    {
        [OperationContract]
        void InsertHangout(int userId, bool moderateHangoutRequest, string description, string text, Hangout.Web.Model.Location screenshotLocation, Hangout.Web.Model.Location location,  DateTime hangoutdateTime,DateTime clientDateTime, string accesstoken);
        [OperationContract]
        Web.Services.Objects.Meetup GetLastHangout(int userid);
        [OperationContract]
        List<Web.Services.Objects.Meetup> GetUserLatestHangouts(int userId, int skip, int take);
        [OperationContract]
        Web.Services.Objects.MeetupData GetHangout(int hangoutId, string accesstoken);
        [OperationContract]
        List<Web.Services.Objects.User> GetUsersInHangout(int hangoutId, string accesstoken);
        [OperationContract]
        List<Web.Services.Objects.HangoutComment> GetHangoutComments(int hangoutId, string accesstoken);
        [OperationContract]
        List<Web.Services.Objects.HangoutComment> GetHangoutCommentsAfter(int hangoutId, DateTime after, string accesstoken);
        [OperationContract]
        void AddHangoutComment(int userId, int hangoutId, string text, DateTime clientdatetime, string accesstoken);
        [OperationContract]
        bool IsPinned(int userId, int hangoutId, string accesstoken);
        [OperationContract]
        List<Web.Services.Objects.Meetup> GetAllPinned(int userId, string accesstoken);
        [OperationContract]
        void PinHangout(int userid, int hangoutId, string accesstoken);
        [OperationContract]
        void UnPinHangout(int userid, int hangoutId, string accesstoken);
        [OperationContract]
        bool JoinedInHangout(int userId, int hangoutId, string accesstoken);
        [OperationContract]
        Web.Core.Meetup.CheckInStatus CheckIn(int userId, int hangoutId, DateTime clientDateTime, double latitude, double longitude, string accesstoken);
        [OperationContract]
        void JoinHangout(int userId, int hangoutId, DateTime clientDateTime, string accesstoken);
        [OperationContract]
        void UnJoinHangout(int userId, int hangoutId, DateTime clientdatetime, string accesstoken);
        [OperationContract]
        bool IsCheckedIn(int userId, int hangoutId, string accesstoken);
        [OperationContract]
        bool CanCheckIn(int userid, int hangoutid, string accesstoken);
        [OperationContract]
        List<Web.Services.Objects.Meetup> GetUserHangout(int userId, int take, int skip);
        [OperationContract]
        List<Web.Services.Objects.Meetup> GetLatestHangouts(int userid, int take, int skip, string accessToken);
        [OperationContract]
        List<Web.Services.Objects.Meetup> SearchHangouts(int userid, string text, int take, int skip, string accessToken);
        

    }
}
